Skip to content

refactor: consolidate 6 identical hasStringKey copies into pkg/setutil.Contains#40534

Merged
pelikhan merged 3 commits into
mainfrom
copilot/refactor-consolidate-hasstringkey-helper
Jun 21, 2026
Merged

refactor: consolidate 6 identical hasStringKey copies into pkg/setutil.Contains#40534
pelikhan merged 3 commits into
mainfrom
copilot/refactor-consolidate-hasstringkey-helper

Conversation

Copilot AI commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Six packages each carried a byte-identical 4-line hasStringKey helper in per-package seenmapbool_helpers.go files — a side-effect of the map[string]boolmap[string]struct{} migration codemod. This PR consolidates all 217 call sites into a single shared generic helper.

Changes

  • pkg/setutil — new dependency-free leaf package (matching sliceutil/typeutil conventions) with a generic Contains[K comparable]:
    func Contains[K comparable](set map[K]struct{}, key K) bool {
        _, ok := set[key]
        return ok
    }
  • 217 call sites across constants, agentdrain, linters/ssljson, parser, workflow, clihasStringKey( replaced with setutil.Contains(; imports added via goimports
  • 6 seenmapbool_helpers.go files deletedpkg/{constants,agentdrain,linters/ssljson,parser,workflow,cli}/seenmapbool_helpers.go

The generic signature covers future non-string key sets at no extra cost.

- Add pkg/setutil with generic Contains[K comparable] function
- Replace 217 hasStringKey call sites across 6 packages with setutil.Contains
- Delete 6 per-package seenmapbool_helpers.go copies

Closes #40531

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Refactor: consolidate hasStringKey copies into a shared generic set helper refactor: consolidate 6 identical hasStringKey copies into pkg/setutil.Contains Jun 21, 2026
Copilot AI requested a review from pelikhan June 21, 2026 00:25
@github-actions github-actions Bot mentioned this pull request Jun 21, 2026
@pelikhan pelikhan marked this pull request as ready for review June 21, 2026 01:40
Copilot AI review requested due to automatic review settings June 21, 2026 01:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes six byte-identical per-package hasStringKey(map[string]struct{}, string) bool helpers and consolidates their usage into a shared, generic set membership helper (pkg/setutil.Contains). This aligns with the existing “leaf util package” approach (e.g., sliceutil) while keeping call sites simple and consistent.

Changes:

  • Added pkg/setutil with a generic Contains[K comparable](map[K]struct{}, K) bool.
  • Updated call sites across constants, agentdrain, linters/ssljson, parser, workflow, and cli to use setutil.Contains.
  • Deleted the duplicated seenmapbool_helpers.go files that previously defined hasStringKey.
Show a summary per file
File Description
pkg/workflow/trigger_parser.go Switch set membership checks to setutil.Contains.
pkg/workflow/tools_validation_github_toolsets.go Switch set membership checks to setutil.Contains.
pkg/workflow/tools_parser.go Switch set membership checks to setutil.Contains.
pkg/workflow/time_delta.go Switch set membership checks to setutil.Contains.
pkg/workflow/template.go Switch set membership checks to setutil.Contains.
pkg/workflow/submit_pr_review.go Switch set membership checks to setutil.Contains.
pkg/workflow/strict_mode_env_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/side_repo_maintenance.go Switch set membership checks to setutil.Contains.
pkg/workflow/shell.go Switch set membership checks to setutil.Contains.
pkg/workflow/seenmapbool_helpers.go Remove duplicated hasStringKey helper.
pkg/workflow/safe_update_manifest.go Switch set membership checks to setutil.Contains.
pkg/workflow/safe_update_enforcement.go Switch set membership checks to setutil.Contains.
pkg/workflow/safe_outputs_needs_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/safe_jobs_needs_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/safe_jobs_needs_validation_test.go Update tests to use setutil.Contains.
pkg/workflow/runtime_import_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/runtime_deduplication.go Switch set membership checks to setutil.Contains.
pkg/workflow/run_step_sanitizer.go Switch set membership checks to setutil.Contains.
pkg/workflow/publish_artifacts_test.go Update tests to use setutil.Contains.
pkg/workflow/permissions_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/package_extraction.go Switch set membership checks to setutil.Contains.
pkg/workflow/on_needs_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/model_alias_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/mcp_setup_generator.go Switch set membership checks to setutil.Contains.
pkg/workflow/mcp_github_config.go Switch set membership checks to setutil.Contains.
pkg/workflow/mcp_config_validation.go Switch set membership checks to setutil.Contains.
pkg/workflow/mcp_config_custom.go Switch set membership checks to setutil.Contains.
pkg/workflow/map_helpers.go Switch set membership checks to setutil.Contains.
pkg/workflow/known_needs_expressions.go Switch set membership checks to setutil.Contains.
pkg/workflow/imports.go Switch set membership checks to setutil.Contains.
pkg/workflow/github_toolsets.go Switch set membership checks to setutil.Contains.
pkg/workflow/git_configuration_steps.go Switch set membership checks to setutil.Contains.
pkg/workflow/frontmatter_extraction_yaml.go Switch set membership checks to setutil.Contains.
pkg/workflow/expression_extraction.go Switch set membership checks to setutil.Contains.
pkg/workflow/engine_helpers.go Switch set membership checks to setutil.Contains.
pkg/workflow/engine_auth_test.go Update tests to use setutil.Contains.
pkg/workflow/docker.go Switch set membership checks to setutil.Contains.
pkg/workflow/dependabot.go Switch set membership checks to setutil.Contains.
pkg/workflow/dependabot_test.go Update tests to use setutil.Contains.
pkg/workflow/copilot_engine_tools.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_safe_outputs_job.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_pre_activation_job.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_orchestrator_workflow.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_orchestrator_tools.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_main_job.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_jobs.go Switch set membership checks to setutil.Contains.
pkg/workflow/compiler_activation_job.go Switch set membership checks to setutil.Contains.
pkg/workflow/command.go Switch set membership checks to setutil.Contains.
pkg/workflow/checkout_manager.go Switch set membership checks to setutil.Contains.
pkg/workflow/bot_aliases.go Switch set membership checks to setutil.Contains.
pkg/workflow/awf_helpers.go Switch set membership checks to setutil.Contains.
pkg/workflow/awf_config.go Switch set membership checks to setutil.Contains.
pkg/workflow/agentic_engine.go Switch set membership checks to setutil.Contains.
pkg/workflow/action_cache.go Switch set membership checks to setutil.Contains.
pkg/setutil/setutil.go Add generic Contains helper for map[K]struct{} sets.
pkg/setutil/setutil_test.go Add unit/spec tests for Contains.
pkg/setutil/README.md Document setutil public API and usage.
pkg/parser/tools_merger.go Switch set membership checks to setutil.Contains.
pkg/parser/seenmapbool_helpers.go Remove duplicated hasStringKey helper.
pkg/parser/schema_validation.go Switch set membership checks to setutil.Contains.
pkg/parser/schema_suggestions.go Switch set membership checks to setutil.Contains.
pkg/parser/schema_errors.go Switch set membership checks to setutil.Contains.
pkg/parser/include_processor.go Switch set membership checks to setutil.Contains.
pkg/parser/import_topological.go Switch set membership checks to setutil.Contains.
pkg/parser/import_field_extractor.go Switch set membership checks to setutil.Contains.
pkg/parser/import_cycle.go Switch set membership checks to setutil.Contains.
pkg/parser/import_bfs.go Switch set membership checks to setutil.Contains.
pkg/parser/frontmatter_hash.go Switch set membership checks to setutil.Contains.
pkg/linters/ssljson/ssljson.go Switch set membership checks to setutil.Contains.
pkg/linters/ssljson/seenmapbool_helpers.go Remove duplicated hasStringKey helper.
pkg/constants/seenmapbool_helpers.go Remove duplicated hasStringKey helper.
pkg/constants/engine_constants.go Switch set membership checks to setutil.Contains.
pkg/cli/zizmor.go Switch set membership checks to setutil.Contains.
pkg/cli/workflows.go Switch set membership checks to setutil.Contains.
pkg/cli/workflow_secrets.go Switch set membership checks to setutil.Contains.
pkg/cli/seenmapbool_helpers.go Remove duplicated hasStringKey helper.
pkg/cli/secrets.go Switch set membership checks to setutil.Contains.
pkg/cli/run_push.go Switch set membership checks to setutil.Contains.
pkg/cli/remove_command.go Switch set membership checks to setutil.Contains.
pkg/cli/packages.go Switch set membership checks to setutil.Contains.
pkg/cli/mcp_tool_table.go Switch set membership checks to setutil.Contains.
pkg/cli/mcp_inspect_mcp.go Switch set membership checks to setutil.Contains.
pkg/cli/logs_safe_output_chains.go Switch set membership checks to setutil.Contains.
pkg/cli/logs_report_test.go Update tests to use setutil.Contains.
pkg/cli/logs_artifact_set.go Switch set membership checks to setutil.Contains.
pkg/cli/jsonworkflow_to_markdown.go Switch set membership checks to setutil.Contains.
pkg/cli/interactive.go Switch set membership checks to setutil.Contains.
pkg/cli/includes.go Switch set membership checks to setutil.Contains.
pkg/cli/imports.go Switch set membership checks to setutil.Contains.
pkg/cli/generate_action_metadata_command.go Switch set membership checks to setutil.Contains.
pkg/cli/gateway_logs_rpc.go Switch set membership checks to setutil.Contains.
pkg/cli/experiments_command.go Switch set membership checks to setutil.Contains.
pkg/cli/engine_secrets.go Switch set membership checks to setutil.Contains.
pkg/cli/engine_secrets_test.go Update tests to use setutil.Contains.
pkg/cli/enable.go Switch set membership checks to setutil.Contains.
pkg/cli/drain3_integration.go Switch set membership checks to setutil.Contains.
pkg/cli/devcontainer.go Switch set membership checks to setutil.Contains.
pkg/cli/dependency_graph.go Switch set membership checks to setutil.Contains.
pkg/cli/compile_workflow_processor.go Switch set membership checks to setutil.Contains.
pkg/cli/compile_post_processing.go Switch set membership checks to setutil.Contains.
pkg/cli/compile_file_operations.go Switch set membership checks to setutil.Contains.
pkg/cli/codemod_steps_run_secrets_env.go Switch set membership checks to setutil.Contains.
pkg/cli/codemod_safe_output_require_title_prefix.go Switch set membership checks to setutil.Contains.
pkg/cli/codemod_engine_env_secrets.go Switch set membership checks to setutil.Contains.
pkg/cli/add_interactive_engine.go Switch set membership checks to setutil.Contains.
pkg/cli/access_log.go Switch set membership checks to setutil.Contains.
pkg/agentdrain/seenmapbool_helpers.go Remove duplicated hasStringKey helper.
pkg/agentdrain/mask.go Switch set membership checks to setutil.Contains.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 108/108 changed files
  • Comments generated: 1

Comment thread pkg/setutil/README.md Outdated
@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot Run pr-finisher skill

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

Copilot AI commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

@copilot Run pr-finisher skill

Fixed in the latest commit — updated the README table to use the correct full signature func Contains[K comparable](set map[K]struct{}, key K) bool.

@pelikhan pelikhan merged commit 60b6004 into main Jun 21, 2026
29 checks passed
@pelikhan pelikhan deleted the copilot/refactor-consolidate-hasstringkey-helper branch June 21, 2026 02:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants